package com.legendshop.openportal.sdk.model.response.v4;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 父订单响应
 *
 * @author EDaoren
 */
@Data
@ApiModel("父订单详情响应")
public class ParentOrderDetailV4Response extends OrderDetailV4Response {

	private static final long serialVersionUID = -8494890836891878163L;

	/**
	 * 父订单详情
	 */
	@ApiModelProperty("父订单详情")
	private POrder porder;

	/**
	 * 子订单详情
	 */
	@ApiModelProperty("子订单详情")
	private List<COrder> corder;


	/**
	 * 订单类型。1是父订单   2是子订单。
	 * OrderDetailTypeEnum
	 */
	@ApiModelProperty("订单类型。1是父订单   2是子订单。")
	private Integer type;

	/**
	 * 订单完成时间，即收货时间
	 * 输出格式为“yyyy-MM-dd hh:mm:ss”
	 * 未完成时，此参数返回null。
	 */
	@ApiModelProperty("订单完成时间")
	private Date finishTime;


	/**
	 * 订单创建时间。
	 * 输出格式为“yyyy-MM-dd hh:mm:ss”
	 */
	@ApiModelProperty("订单创建时间")
	private Date createTime;


	@Data
	public static class POrder implements Serializable {

		private static final long serialVersionUID = 3119484186173796710L;

		/**
		 * 订单号
		 */
		@ApiModelProperty("订单号")
		private String subNumber;

		/**
		 * 运费
		 */
		@ApiModelProperty("运费")
		private BigDecimal freight;

		/**
		 * 订单实付金额。
		 */
		@ApiModelProperty("订单实付金额")
		private BigDecimal actualOrderPrice;


		/**
		 * 订单应付金额
		 */
		@ApiModelProperty("订单应付金额")
		private BigDecimal orderPrice;

		/**
		 * 订单付款时间
		 */
		@ApiModelProperty("订单付款时间")
		private Date payDate;

		/**
		 * 发货时间
		 * 父订单不会返回此参数，子订单会返回此参数。
		 */
		@Deprecated
		@ApiModelProperty("发货时间")
		private Date dvyDate;


	}

	/**
	 * 子订单
	 *
	 * @author EDaoren
	 */
	@Data
	public static class COrder implements Serializable {

		private static final long serialVersionUID = 5627230400517488563L;

		/**
		 * 父订单号。为0时，此订单为父单。
		 */
		@ApiModelProperty("父订单号")
		private String porder;

		/**
		 * 订单编号
		 */
		@ApiModelProperty("订单号")
		private String subNumber;

		/**
		 * 订单状态 1: 待确认 2：待发货（已确认） 3：待收货（已发货） 4：已完成（已收货） 5：已取消
		 */
		@ApiModelProperty("订单状态")
		private Integer orderState;

		/**
		 * 商品列表
		 */
		@ApiModelProperty("商品列表")
		private List<OrderSku> skuList;

		/**
		 * 运费
		 */
		@ApiModelProperty("运费")
		private BigDecimal freight;


		/**
		 * 订单实付金额。
		 * （不包含运费，订单总金额 freight+ orderPrice）
		 */
		@ApiModelProperty("订单实付金额")
		private BigDecimal actualOrderPrice;

		/**
		 * 订单应付金额
		 */
		@ApiModelProperty("订单应付金额")
		private BigDecimal orderPrice;

		/**
		 * 订单付款时间
		 */
		@ApiModelProperty("订单付款时间")
		private Date payDate;

		/**
		 * 发货时间
		 */
		@ApiModelProperty("发货时间")
		private Date dvyDate;

		/**
		 * 付款类型列表
		 * 需要在queryExts字段携带 paymentType 标识
		 */
		@ApiModelProperty("付款类型列表")
		private List<PaymentType> paymentTypes;
	}

}



